package cn.b.sky.mes.pp.service;

import java.util.List;

import cn.b.sky.common.model.Page;
import cn.b.sky.mes.pp.model.ProductionOrderPlan;
import cn.b.sky.mes.pp.model.condition.ProductionOrderPlanCondition;

/**
 * 
 * <strong>Title : ProductionOrderPlanService.java<br></strong>
 * <strong>Package : cn.b.sky.mes.pp.service<br></strong>
 * <strong>Description : </strong>订单计划业务接口<br> 
 * <strong>Create on : 2016年1月20日 上午10:24:42<br></strong>
 * <p>
 * @author dapeng.li<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface ProductionOrderPlanService {

  /**
   * 
   * <strong>Title : selectUncompletedOrdersByOrderNums<br></strong>
   * <strong>Description : </strong>根据订单编号查询新建状态的订单<br> 
   * <strong>Create on : 2016年2月3日 上午9:33:56<br></strong>
   * <p>
   * @param orderNums
   * @param siteCode
   * @param languageCode
   * @return
   * List<ProductionOrderPlan>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<ProductionOrderPlan> selectUncompletedOrdersByOrderNums(String[] orderNums, String siteCode, String languageCode);

  /**
   * 
   * <strong>Title : selectProductionOrderPlansByDate<br></strong>
   * <strong>Description : </strong>查询某时间段内的订单计划<br> 
   * <strong>Create on : 2016年1月20日 下午12:57:51<br></strong>
   * <p>
   * @param orderNums
   * @param siteCode
   * @param languageCode
   * @param startDate
   * @param endDate
   * @return
   * List<ProductionOrderPlan>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<ProductionOrderPlan> selectProductionOrderPlansByDate(String[] orderNums, String siteCode, String languageCode,
      String startDate, String endDate);

  /**
   * 
   * <strong>Title : saveOrderPlanListAndIssueOrder<br></strong>
   * <strong>Description : </strong>保存订单计划数据<br> 
   * <strong>Create on : 2016年1月28日 下午4:50:13<br></strong>
   * <p>
   * @param orderPlan
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void saveOrderPlan(ProductionOrderPlan orderPlan);

  /**
   * 
   * <strong>Title : deleteOrderPlanByOrderNum<br></strong>
   * <strong>Description : </strong>撤销投产时删除该订单所有的计划<br> 
   * <strong>Create on : 2016年2月1日 下午3:14:41<br></strong>
   * <p>
   * @param siteCode
   * @param orderNum
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteOrderPlanByOrderNum(String siteCode, String orderNum);

  /**
   * 
   * <strong>Title : deleteOrderPlanByOrderNumAndStartDate<br></strong>
   * <strong>Description : </strong>重新下达时删除起始日期之后的所有计划，重新插入<br> 
   * <strong>Create on : 2016年2月1日 下午3:15:34<br></strong>
   * <p>
   * @param siteCode
   * @param orderNum
   * @param startDate
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteOrderPlanByOrderNumAndStartDate(String siteCode, String orderNum, String startDate);

  /**
   * 
   * <strong>Title : selectScheduleDays<br></strong>
   * <strong>Description : </strong>获取时间范围跨度（天）<br> 
   * <strong>Create on : 2016年2月17日 上午10:32:41<br></strong>
   * <p>
   * @return
   * int
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectScheduleDays();

  /**
   * 
   * <strong>Title : selectProductionOrderPlansWithExtInfoPageByCondition<br></strong>
   * <strong>Description : </strong>根据语言编码及生产订单计划查询条件查询生产订单计划分页结果集<br> 
   * <strong>Create on : 2016-5-23 下午5:55:49<br></strong>
   * <p>
   * @param condition 生产订单计划查询条件
   * @return 生产订单计划分页结果集
   * Page
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public Page selectProductionOrderPlansWithExtInfoPageByCondition(ProductionOrderPlanCondition condition);

  /**
   * 
   * <strong>Title : SelectProductionOrderPlansWithExtInfoByCondition<br></strong>
   * <strong>Description : </strong>根据语言编码及生产订单计划查询条件查询生产订单计划结果集<br> 
   * <strong>Create on : 2016-5-24 下午4:29:15<br></strong>
   * <p>
   * @param condition 生产订单计划查询条件
   * @return 生产订单计划结果集
   * List<ProductionOrderPlan>
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<ProductionOrderPlan> selectProductionOrderPlansWithExtInfoByCondition(
      ProductionOrderPlanCondition condition);

  /**
   * 
   * <strong>Title : getProductionOrderPlanWithExtInfoByPK<br></strong>
   * <strong>Description : </strong>根据工厂ID及主键ID查询订单计划详情信息<br> 
   * <strong>Create on : 2016-5-25 上午11:08:55<br></strong>
   * <p>
   * @param siteCode 工厂编码
   * @param id 主键ID
   * @return 订单计划详情对象
   * ProductionOrderPlan
   * @throws 
   * @author JunLin.Yang<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public ProductionOrderPlan getProductionOrderPlanWithExtInfoByPK(String siteCode, String id);

  /**
   * 
   * <strong>Title : selectArrangedOrdersByOrderNums<br></strong>
   * <strong>Description : </strong>查询已经排产过的生产订单<br> 
   * <strong>Create on : 2016年5月26日 下午1:57:39<br></strong>
   * <p>
   * @param siteCode
   * @param orderNums
   * @param languageCode
   * @return
   * List<ProductionOrderPlan>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<ProductionOrderPlan> selectArrangedOrdersByOrderNums(String siteCode, String[] orderNums,
      String languageCode);
}
